package es.gesfutbol.domini.implementacio;

import java.util.Date;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import es.gesfutbol.domini.IArbitre;

@Entity
@Table (name="arbitre")
public class Arbitre implements IArbitre {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -6259521139410625281L;

	private Long idArbitre;
	
	private String nom;
	
	private String colegi;
	
	private Date naixement;
	
	private boolean estaActiu;
	
	private String rutaFoto;
	
	private Set<EstadisticaArbitre> estadistiques;

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="idArbitre", nullable=false, precision = 10, scale=0)
	public Long getIdArbitre() {
		return idArbitre;
	}

	public void setIdArbitre(Long idArbitre) {
		this.idArbitre = idArbitre;
	}

	@Column(name="nom", length=45, nullable=false)
	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	@Column(name="collegi", length=45, nullable=false)
	public String getColegi() {
		return colegi;
	}

	public void setColegi(String colegi) {
		this.colegi = colegi;
	}

	@Temporal(TemporalType.DATE)
	@Column(name="dataNaixement", nullable=true, length=11)
	public Date getNaixement() {
		return naixement;
	}
	
	public void setNaixement(Date naixement) {
		this.naixement = naixement;
	}
	
	
	@Column(name="estaActiu", nullable=true, columnDefinition="tinyint(1) default 1")
	public boolean isEstaActiu() {
		return estaActiu;
	}

	public void setEstaActiu(boolean estaActiu) {
		this.estaActiu = estaActiu;
	}
	
	@Column(name="rutaFoto", length=45, nullable=true)
	public String getRutaFoto() {
		return rutaFoto;
	}
	
	public void setRutaFoto(String rutaFoto) {
		this.rutaFoto = rutaFoto;		
	}

	@OneToMany(fetch=FetchType.LAZY, mappedBy="id.arbitre", cascade=CascadeType.ALL )
	public Set<EstadisticaArbitre> getEstadistiques() {
		return estadistiques;
	}

	public void setEstadistiques(Set<EstadisticaArbitre> estadistiques) {
		this.estadistiques = estadistiques;
	}

}